A network storage server is a processing system that is used to store and retrieve data on behalf of one or more hosts (clients) on a network. A storage server operates on behalf of one or more hosts to store and manage data in a set of mass storage devices, such as magnetic or optical storage-based discs or tapes. Some storage servers are designed to service file-level requests from hosts, as is commonly the case with file servers used in a network attached storage (NAS) environment. Other storage servers are designed to service block-level requests from hosts, as with storage servers used in a storage area network (SAN) environment. Still other servers are capable of servicing both file-level requests and block-level requests, as is the case with certain storage servers made by NetApp, Inc. of Sunnyvale, Calif.
A storage server typically uses a mass storage subsystem to store and retrieve data at the request of hosts. As used herein, a “mass storage subsystem” is a set of one or more physical storage devices configured for use by a storage server. A mass storage subsystem may be, for example, a set of hard drives or solid state devices (SSD) configured in a RAID configuration. Data is stored on the physical storage devices according to a data layout defined by the file system. As used herein, a “file system” is an independently managed, self-contained, organized structure of data units (e.g., files, blocks, or logical unit numbers (LUNs)). The data layout specifies how these data units are divided and stored at various physical locations in the mass storage subsystem. Aspects of the data layout may be controlled to achieve various performance goals. For example, some layouts, such as the proprietary Write Anywhere File Layout file (WAFL™) system developed by NetApp, Inc., are used as part of “write anywhere” file systems, which are not constrained to write any particular data or metadata to a particular storage location or region. Rather, write-anywhere systems can write to any unallocated block on any available mass storage device and do not overwrite data on the devices. As a result, these write-anywhere file systems can achieve high efficiency for write operations. However, write-anywhere systems may be slower for read operations, because data stored in a write-anywhere system can quickly become fragmented over a wide area on the physical storage devices. Other file systems may be designed to shift the balance in the other direction, such that read performance is improved at the expense of write performance. Accordingly, existing systems tend to be optimized for a particular type of workload (e.g., reads or writes) at the expense of other types of workloads.